﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using CI.Caja.BE;
using System.Data.SqlClient;

namespace CI.Caja.DL
{
    public class DA_DetalleSencillo : IDA_DetalleSencillo
    {
        public BE_DetalleSencillo RegistrarDetalleSencillo(BE_DetalleSencillo detallesencillo)
        {
            string sentencia = "INSERT INTO CA_DETALLESENCILLO(idSolicitud,idDetalle,idMoneda,idDenominacion,numCantidad) VALUES (@idSolicitud,@idDetalle,@idMoneda,@idDenominacion,@numCantidad)";

            //SqlTransaction transaccion;
            using (SqlConnection conexion = new SqlConnection(DA_Utilitario.ObtenerConexion()))
            {
                conexion.Open();
                try
                {
                    using (SqlCommand comando = new SqlCommand(sentencia, conexion))
                    {
                        comando.Parameters.Add(new SqlParameter("@idSolicitud", detallesencillo.IdSolicitud));
                        comando.Parameters.Add(new SqlParameter("@idDetalle", detallesencillo.IdDetalle));
                        comando.Parameters.Add(new SqlParameter("@idMoneda", detallesencillo.IdMoneda));
                        comando.Parameters.Add(new SqlParameter("@idDenominacion", detallesencillo.IdDenominacion));
                        comando.Parameters.Add(new SqlParameter("@numCantidad", detallesencillo.Cantidad));
                        comando.ExecuteNonQuery();
                    }
                }
                catch (SqlException error)
                {
                    throw new Exception(error.Message);
                }
                finally
                {
                    if (conexion != null)
                    {
                        if (conexion.State == System.Data.ConnectionState.Open) conexion.Close();
                    }
                }

            }
            return ObtenerDetalleSencillo(detallesencillo.IdDetalle);
        }

        public BE_DetalleSencillo ObtenerDetalleSencillo(int idSolicitud)
        {
            BE_DetalleSencillo detalleSencillo = null;

            string sentencia = "SELECT idSolicitud,idDetalle,idMoneda,idDenominacion,numCantidad FROM CA_DETALLESENCILLO WHERE idDetalle=@idDetalle";
            using (SqlConnection conexion = new SqlConnection(DA_Utilitario.ObtenerConexion()))
            {
                conexion.Open();
                using (SqlCommand comando = new SqlCommand(sentencia, conexion))
                {
                    comando.Parameters.Add(new SqlParameter("@idDetalle", idSolicitud));

                    SqlDataReader resultado = comando.ExecuteReader();
                    if (resultado.Read())
                    {
                        detalleSencillo = new BE_DetalleSencillo();
                        detalleSencillo.IdSolicitud = (int)resultado["idSolicitud"];
                        detalleSencillo.IdDetalle = (int)resultado["idDetalle"];
                        detalleSencillo.IdMoneda = (int)resultado["idMoneda"];
                        detalleSencillo.IdDenominacion = (int)resultado["idDenominacion"];
                        detalleSencillo.Cantidad = (int)resultado["numCantidad"];


                    }
                }
            }
            return detalleSencillo;
        }

        public string ObtenerCodigo()
        {
            string codigo = "";
            string sentencia = "Select ISNULL(MAX(idSolicitud),0)+1 as Codigo from CA_SENCILLO";
            using (SqlConnection conexion = new SqlConnection(DA_Utilitario.ObtenerConexion()))
            {
                conexion.Open();
                using (SqlCommand comando = new SqlCommand(sentencia, conexion))
                {
                    SqlDataReader resultado = comando.ExecuteReader();
                    if (resultado.Read())
                    {
                        codigo = resultado["Codigo"].ToString();

                    }
                }
            }
            return codigo;
        }
    }
    
}
